export default class Dep {
  // 静态属性，用来保存当前的 Watcher，因为要到数据的 get 中收集 Watcher 到 Dep 中去的
  static target
  subs = []

  constructor() {}

  // 收集依赖
  depend() {
    // Dep.target ==> Watcher 实例
    if (Dep.target) {
      // this ==> Dep 的实例对象
      Dep.target.addDep(this)
    }
  }

  // 添加订阅者（Watcher）
  addSub(sub) {
    if (this.subs.includes(sub)) return
    this.subs.push(sub)
    console.log(this.subs, 'dep - subs')
  }

  // 通知更新
  notify() {
    // sub 就是每一个 Watcher 实例
    for (const sub of this.subs) {
      sub.update()
    }
  }
}
